package com.hunliji.monitor.share.component.mq.rocket.constants;

import lombok.Getter;

/**
 * rocket mq 消息的常量和枚举
 * @author wuchen
 */
public interface RocketMqConstants {
    /**
     * 发送消息默认的超时时间
     */
    Long DEFAULT_TIME_OUT = 500L;
    /**
     * 发送端的应用名称
     */
    String SEND_APP_NAME = "hlj-monitor-server";


    /**
     * 测试 topic
     */
    String TEST_TOPIC = "hlj-monitor-server-test";
    /**
     * 测试tag
     */
    String TEST_TAG = "test";
    /**
     * 测试并发的tag
     */
    String TEST_TAG_BATCH = "test-batch";

    String TEST_TAG_ORDER = "test-order";
    /**
     * 测试的消费者组
     */
    String TEST_CONSUME_GROUP = "monitor-test-group";

    /**
     * 测试的消费者组 测试批量消费
     */
    String TEST_CONSUME_GROUP_BATCH = "monitor-test-group-batch";

    /**
     * 测试的消费者组 测试顺序消费
     */
    String TEST_CONSUME_GROUP_ORDER = "monitor-test-group-order";

    String GROUP_FEISHU_DELAY = "hlj-monitor-server-feishu-delay-group";

    String TOPIC_FEISHU_DELAY = "hlj-monitor-server-feishu-delay-topic";

    String TAG_FEISHU_DELAY = "hlj-monitor-server-feishu-delay-tag";

    String GROUP_FEISHU_CREATE_ISSUE_DELAY = "hlj-monitor-server-feishu-create-issue-delay-group";

    String TOPIC_FEISHU_CREATE_ISSUE_DELAY = "hlj-monitor-server-feishu-create-issue-topic";

    String TAG_FEISHU_CREATE_ISSUE_DELAY = "hlj-monitor-server-feishu-create-issue-tag";

    /**
     * 延时消息的等级
     */
    @Getter
    enum DelayLevel{
        /**
         * 1 秒
         */
        ONE_SECOND(1),
        /**
         * 5秒
         */
        FIVE_SECOND(2),
        /**
         * 10秒
         */
        TEN_SECOND(3),
        /**
         * 30秒
         */
        THIRTY_SECOND(4),
        /**
         * 1 分钟
         */
        ONE_MINUTE(5),
        /**
         * 2分钟
         */
        TWO_MINUTE(6),
        /**
         * 3分钟
         */
        THREE_MINUTE(7),
        /**
         * 4分钟
         */
        FOUR_MINUTE(8),
        /**
         * 5分钟
         */
        FIVE_MINUTE(9),
        /**
         * 6分钟
         */
        SIX_MINUTE(10),
        /**
         * 7分钟
         */
        SEVEN_MINUTE(11),
        /**
         * 8分钟
         */
        EIGHT_MINUTE(12),
        /**
         * 9分钟
         */
        NINE_MINUTE(13),
        /**
         * 10分钟
         */
        TEN_MINUTE(14),
        /**
         * 20分钟
         */
        TWENTY_MINUTE(15),
        /**
         * 30分钟
         */
        THIRTY_MINUTE(16),
        /**
         * 1小时
         */
        ONE_HOUR(17),
        /**
         * 2小时
         */
        TWO_HOUR(18)
        ;


        private Integer level;

        DelayLevel(Integer level) {
            this.level = level;
        }
    }
}
